{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task01 DataWhale - 零基础对赛事的理解"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 赛事的背景"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " * 赛事数据来源： 赛题数据采用公开数据集 <a href=\"http://ufldl.stanford.edu/housenumbers/\">SVHN</a>\n",
    " \n",
    " * 参赛的目的： 提升自己在CV方面的建模能力和实操，并掌握基础的计算机视觉分析方法，间接提升团队协作能力。\n",
    " \n",
    " * 思路解决途径: 与团队探讨赛事过程中遇到的问题，同时参考相应的paper作为思路参考（例如大佬推荐的：https://github.com/ChanChiChoi/awesome-ocr)\n",
    " \n",
    " * 基础知识学习外参考: \n",
    " \n",
    " <a href=\"https://github.com/ShusenTang/Dive-into-DL-PyTorch\" title=\"动手学深度学习+pytorch\">1. 动手学深度学习+pytorch</a>\n",
    " \n",
    " <a href=\"https://github.com/ex2tron/OpenCV-Python-Tutorial\" title=\"opencv基础教程\">2. opencv基础教程</a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 赛事规则理解及准备"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 赛事报名详情"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " 报名地址：https://tianchi.aliyun.com/competition/entrance/531795/introduction\n",
    " ![数据示例](Task01/报名地址.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " 报名完成完成数据下载，保存到 `./DATA_SOURCE` 目录下."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 赛事数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "|数据类别 | 数量大小 | 数据来源 |\n",
    "| ---- | ---- | ---- |\n",
    "|训练集 | 3W | 赛事给定数据 |\n",
    "|验证集 | 1W | 赛事给定数据 |\n",
    "|测试集 | 4W | SVHN原始数据集 |\n",
    "\n",
    "- 数据特点：训练集、验证集提供了训练集、验证集中所有字符的位置框\n",
    "\n",
    "- 注意事项：所有的参赛选手只能使用比赛给定的数据集完成训练，不能使用SVHN原始数据集进行训练。比赛结束后将会对Top选手进行代码审核，违规的选手将清除排行榜成绩"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 数据标签"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 原始图片 | 图例说明 | 图片JSON标识 |\n",
    "| -- | -- | ---- |\n",
    "| <img src=\"Task01/原始图片.png\" alt=\"原始图片\" width=\"300\" height=\"250\" align=\"center\" /> | <img src=\"Task01/字符坐标.png\" alt=\"字符坐标\" width=\"250\" height=\"250\" align=\"center\" /> | {<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color:#92278f;font-weight:bold;\">\"top\"</span>:<span style=\"color:#25aae2;font-weight:bold;\">[77, 8]</span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color:#92278f;font-weight:bold;\">\"left\"</span>:<span style=\"color:#25aae2;font-weight:bold;\">[246, 323]</span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color:#92278f;font-weight:bold;\">\"label\"</span>:<span style=\"color:#25aae2;font-weight:bold;\">[1, 9]</span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color:#92278f;font-weight:bold;\">\"height\"</span>:<span style=\"color:#25aae2;font-weight:bold;\">[219, 219]</span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color:#92278f;font-weight:bold;\">\"width\"</span>:<span style=\"color:#25aae2;font-weight:bold;\">[81, 96]</span><br>} |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(58, 128, 3)\n",
      "(5, 2)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 对数据集中的JSON标签文件进行读取\n",
    "import json\n",
    "import numpy as np\n",
    "def parse_json(json_path):\n",
    "    file = open(json_path, mode='r', encoding='utf-8')\n",
    "    jsonDict = json.load(file)\n",
    "    def get_name(name):\n",
    "        d = jsonDict[name]\n",
    "        arr = np.array([\n",
    "            d['top'], d['height'], d['left'], d['width'], d['label']\n",
    "        ])\n",
    "        arr.astype(np.int)\n",
    "        return arr\n",
    "    return get_name\n",
    "        \n",
    "\n",
    "# 读取一张图 \n",
    "# 以编号000012为例\n",
    "import cv2\n",
    "from PIL import Image\n",
    "import matplotlib.pyplot as plt\n",
    "# image = cv2.imread 不能有中文路径\n",
    "img = cv2.imread('Task01/000012.png')\n",
    "arr = parse_json('Task01/mchar_train.json')('000012.png')\n",
    "print(img.shape)\n",
    "plt.figure(figsize=(10, 10))\n",
    "# 多展示一个维度\n",
    "plt.subplot(1, arr.shape[1]+1, 1)\n",
    "print(arr.shape)\n",
    "plt.imshow(img)\n",
    "plt.xticks([]); plt.yticks([])\n",
    "\n",
    "for idx in range(arr.shape[1]):\n",
    "    # 从第二列开始\n",
    "    plt.subplot(1, arr.shape[1]+1, idx+2)\n",
    "    plt.imshow(img[arr[0,idx]:arr[0, idx]+arr[1, idx],arr[2, idx]:arr[2, idx]+arr[3, idx]])\n",
    "    # 标识结果\n",
    "    plt.title(arr[4, idx])\n",
    "    plt.xticks([]); plt.yticks([])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4 评价指标"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ Score = \\frac{\\text{Test_Predicate_Right}}{\\text{Test_Predicate}} $$ \n",
    "\n",
    "其中：Test_Predicate_Right 表示测试预测正确的数量，Test_Predicate 表示进行预测集数量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5 解题思路"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> **当前有三种解题方式**\n",
    "\n",
    "1. 定长字符识别: （多标签分类问题）将问题转化为对每一张图像的定长字符识别。 首先对训练集中图片的最长字符数进行求解，结果显示最长字符数为6（求解过程如下代码所示），因此假设每张图片含6个字符，不足6个的位置补 $X$。这样每一张图像上的字符就有$[0,1,2,3,4,5,6,7,8,9,X]$ 这11个类别。\n",
    "\n",
    "![23XXXX](Task01/23xxxxxx.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. 不定长字符识别：采用特定的方法解决不定长字符识别问题，比如CRNN模型。(存疑，不太了解，后续再补充)\n",
    "\n",
    "可以参考 https://blog.csdn.net/qq_24819773/article/details/104605994"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. 检测再识别：（目标检测问题）直接将问题看作是一个10个类别的目标检测问题，参考YOLO或者SSD等常用检测模型进行解决。(存疑，不太了解，后续再补充)\n",
    "\n",
    "可以参考 https://www.jianshu.com/p/cad68ca85e27 和 https://blog.csdn.net/zhangjunp3/article/details/80597312 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 本节总结"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 掌握了参与该赛事的基本流程方法。\n",
    "- 掌握了赛事的基本规则和数据结构。\n",
    "- 对赛事题目有了更深刻的认识，三种解决思路的难度从低到高，也在下面的学习中逐步强化能力。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
